package algorithm.leecode.permutation;

import org.junit.Test;

import java.util.HashSet;
import java.util.Set;

/**
 * @author bingo
 * @Description     排列问题for循环暴力解法
 * @Date 2018/8/31
 */
public class MultiFor {

    @Test
    public void test() {
        int m=0;
        Set<String> set = new HashSet<>();
        int count=0;
        int wt[] = new int[]{1, 2, 3, 4, 5};
        for (int a = 0; a < 5; a++) {
            m++;
            int aItem = wt[a];
            for (int b = 0; b < 5; b++) {
                int bItem = wt[b];
                int bsum = aItem + bItem;
                if (bsum >= 10) {
                    if(bsum==10){
                        count++;
                        set.add(value(aItem)+value(bItem));
                    }
                    break;

                }
                for (int c = 0; c < 5; c++) {
                    m++;
                    int cItem = wt[c];
                    int csum = bsum + cItem;
                    if (csum >= 10) {
                        if(csum==10){
                            count++;
                            set.add(value(aItem)+value(bItem)+value(cItem));
                        }
                        break;
                    }
                    for (int d = 0; d < 5; d++) {
                        m++;
                        int dItem = wt[d];
                        int dsum = csum + dItem;
                        if (dsum >= 10) {
                            if(dsum==10){
                                count++;
                                set.add(value(aItem)+value(bItem)+value(cItem)+value(dItem));
                            }
                            break;
                        }
                        for (int e = 0; e < 5; e++) {
                            m++;
                            int eItem = wt[e];
                            int esum = dsum + eItem;
                            if (esum >= 10) {
                                if(esum==10){
                                    count++;
                                    set.add(value(aItem)+value(bItem)+value(cItem)+value(dItem)+value(eItem));
                                }

                                break;
                            }
                            for (int f = 0; f < 5; f++) {
                                m++;
                                int fItem = wt[f];
                                int fsum = esum + fItem;
                                if (fsum >= 10) {
                                    if(fsum==10){
                                        count++;
                                        set.add(value(aItem)+value(bItem)+value(cItem)+value(dItem)+value(eItem)+value(fItem));

                                    }
                                    break;
                                }
                                for (int g = 0; g < 5; g++) {
                                    m++;
                                    int gItem = wt[g];
                                    int gsum = fsum + gItem;
                                    if (gsum >= 10) {
                                        if(gsum==10){
                                            count++;
                                            set.add(value(aItem)+value(bItem)+value(cItem)+value(dItem)+value(eItem)+value(fItem)+value(gItem));

                                        }
                                        break;
                                    }
                                    for (int h = 0; h < 5; h++) {
                                        m++;
                                        int hItem = wt[h];
                                        int hsum = gsum + hItem;
                                        if (hsum >= 10) {
                                            if(hsum==10){
                                                count++;
                                                set.add(value(aItem)+value(bItem)+value(cItem)+value(dItem)+value(eItem)+value(fItem)+value(gItem)+value(hItem));

                                            }
                                        }
                                        for (int i = 0; i < 5; i++) {
                                            m++;
                                            int iItem = wt[i];
                                            int isum = hsum + iItem;
                                            if (isum >= 10) {
                                                if(isum==10){
                                                    count++;
                                                    set.add(value(aItem)+value(bItem)+value(cItem)+value(dItem)+value(eItem)+value(fItem)+value(gItem)+value(hItem)+value(iItem));

                                                }
                                                break;
                                            }
                                            for (int j = 0; j < 5; j++) {
                                                m++;
                                                int jItem = wt[j];
                                                int jsum = isum + jItem;

                                                if (jsum >= 10) {
                                                    if(jsum==10){
                                                        count++;
                                                        set.add(value(aItem)+value(bItem)+value(cItem)+value(dItem)+value(eItem)+value(fItem)+value(gItem)+value(hItem)+value(iItem)+value(jItem));

                                                    }
                                                    break;
                                                }


                                            }

                                        }

                                    }

                                }
                            }
                        }
                    }
                }
            }
        }
        System.out.println("可能"+count);
        System.out.println("m="+m);
        for(String str:set){
            if(str.length()==8&&str.contains("2")){
                System.out.println(str);
            }
        }
        System.out.println("m=="+m);

    }

    private int count=0;

    public void test2(int sum) {
        int wt[] = new int[]{1, 2, 3, 4, 5};
        for (int a = 0; a < 5; a++) {
            int aItem = wt[a];
            int bsum = sum + aItem;
            if (bsum >= 10) {
                if (bsum == 10) {
                    count++;
                }
                return;
            }
            test2(bsum);

        }
    }
    @Test
    public  void test3(){

        test2(0);
        System.out.println("递归all:"+count);
    }
    public String value(int value){

        return String.valueOf(value);
    }
}
